#ifndef _HELIX_OPEN_GL_RENDERER_HELPER_H_
#define _HELIX_OPEN_GL_RENDERER_HELPER_H_

#include "../../HObject.h"
#include "../RenderHelper.h"
#include "../MeshRenderer.h"
#include "../../Domain/HelixMesh.h"
#include "OpenGLExt.h"
#include "OpenGLSupport.h"


namespace helix{

	/**	Helper class for rendering objects in OpenGL
	*	Implements the RenderHelper abstract class and provides helper/convenience functions
	*	for rendering 3D graphics using OpenGL
	*/
	class MY_CLASS OpenGLHelper : public RenderHelper
	{
	private:
		OpenGLExtensions *GLextensions;    //access to opengl extensions

		MeshRenderer *meshRenderer;

		int maxTextureUnits;

	public:
		/**	\copyDoc RenderHelper::RenderHelper() */
		OpenGLHelper();             

		/**	\copyDoc RenderHelper::~RenderHelper() */
		virtual ~OpenGLHelper();    

		/** \copyDoc RenderHelper::setVSync() */
		virtual bool setVSync(bool VSyncOn);                    

		/** \copyDoc RenderHelper::setPointSize() */
		virtual void setPointSize(float size);

		/** \copyDoc RenderHelper::drawPoint3f() */
		virtual void drawPoint3f(float vert[3]);

		/** Attempts to draw the Mesh in the most efficient way that is supported in hardware.
			\copyDoc RenderHelper::drawMesh()
		*/
		virtual void drawMesh(Mesh *mesh);

	};

}
#endif
